Diamond Operator জাভা 7-এ প্রবর্তিত একটি বৈশিষ্ট্য যা জেনেরিক্স ব্যবহার করার সময় কোডের সরলতা এবং পড়ার সহজতা বাড়ায়। এটি কম্পাইলারকে টাইপ অনুমান করার সুযোগ দেয়, ফলে জেনেরিক টাইপগুলি বারবার উল্লেখ করার প্রয়োজন হয় না।
<>
) এর উদ্দেশ্যimport java.util.ArrayList;
import java.util.List;
public class BeforeJava7 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>(); // Repeating the type
list.add("Java");
list.add("Generics");
for (String str : list) {
System.out.println(str);
}
}
}
import java.util.ArrayList;
import java.util.List;
public class AfterJava7 {
public static void main(String[] args) {
List<String> list = new ArrayList<>(); // Diamond operator used
list.add("Java");
list.add("Generics");
for (String str : list) {
System.out.println(str);
}
}
}
<>
ব্যবহার করেন, জাভা কম্পাইলার টাইপ ইনফারেন্স (Type Inference) ব্যবহার করে টাইপ নির্ধারণ করে।Map<String, List<Integer>> map = new HashMap<>();
এখানে, <>
টাইপ প্যারামিটার (String, List<Integer>
) পূর্ববর্তী ঘোষণার উপর ভিত্তি করে অনুমান করে।
List<List<String>> nestedList = new ArrayList<>(); // Clean and type-safe
List<String> list = new ArrayList<>() {
@Override
public boolean add(String s) {
return super.add(s);
}
}; // Compile-time error
কারণ: Anonymous class এর ক্ষেত্রে টাইপ স্পেসিফিকেশন প্রয়োজন।
সঠিক সমাধান:
List<String> list = new ArrayList<String>() {
@Override
public boolean add(String s) {
return super.add(s);
}
};
List list = new ArrayList<>(); // Warning: Raw type usage
class Box<T> {
private T value;
public Box(T value) {
this.value = value;
}
public T getValue() {
return value;
}
}
public class Main {
public static void main(String[] args) {
Box<Integer> box = new Box<>(100); // Type inference used
System.out.println(box.getValue());
}
}
Diamond Operator জাভা 7 এ টাইপ ইনফারেন্স সহজ করার জন্য একটি শক্তিশালী বৈশিষ্ট্য। এটি:
তবে, Anonymous Class এবং Raw Types এর ক্ষেত্রে এর সীমাবদ্ধতা মনে রাখা গুরুত্বপূর্ণ।
Read more